From: Aaron Schulz Date: Tue, 10 Nov 2015 06:48:36 +0000 (-0800) Subject: Migrate feeds from $messageMemc to the WAN cache X-Git-Tag: 1.31.0-rc.0~9027^2 X-Git-Url: http://git.cyclocoop.org/%7D%7Cconcat%7B?a=commitdiff_plain;h=3517be1cf0b7841b6f20d97fbcfa97f8645270a6;p=lhc%2Fweb%2Fwiklou.git Migrate feeds from $messageMemc to the WAN cache This makes the delete() calls work properly for all DCs. Also, using the message cache was fairly bizzare. Change-Id: Idec7fa47811e982ba89bb8fbbd9565a26585e77f --- diff --git a/includes/FeedUtils.php b/includes/FeedUtils.php index 57ba4b3e08..b058975b73 100644 --- a/includes/FeedUtils.php +++ b/includes/FeedUtils.php @@ -30,18 +30,19 @@ class FeedUtils { /** * Check whether feed's cache should be cleared; for changes feeds - * If the feed should be purged; $timekey and $key will be removed from - * $messageMemc + * If the feed should be purged; $timekey and $key will be removed from cache * * @param string $timekey Cache key of the timestamp of the last item * @param string $key Cache key of feed's content */ public static function checkPurge( $timekey, $key ) { - global $wgRequest, $wgUser, $messageMemc; + global $wgRequest, $wgUser; + $purge = $wgRequest->getVal( 'action' ) === 'purge'; if ( $purge && $wgUser->isAllowed( 'purge' ) ) { - $messageMemc->delete( $timekey ); - $messageMemc->delete( $key ); + $cache = ObjectCache::getMainWANInstance(); + $cache->delete( $timekey, 1 ); + $cache->delete( $key, 1 ); } } diff --git a/includes/changes/ChangesFeed.php b/includes/changes/ChangesFeed.php index 28a1ccadd4..dc588358ca 100644 --- a/includes/changes/ChangesFeed.php +++ b/includes/changes/ChangesFeed.php @@ -83,7 +83,8 @@ class ChangesFeed { } $optionsHash = md5( serialize( $opts->getAllValues() ) ) . $wgRenderHashAppend; - $timekey = wfMemcKey( $this->type, $this->format, $wgLang->getCode(), $optionsHash, 'timestamp' ); + $timekey = wfMemcKey( + $this->type, $this->format, $wgLang->getCode(), $optionsHash, 'timestamp' ); $key = wfMemcKey( $this->type, $this->format, $wgLang->getCode(), $optionsHash ); FeedUtils::checkPurge( $timekey, $key ); @@ -110,21 +111,20 @@ class ChangesFeed { } /** - * Save to feed result to $messageMemc + * Save to feed result to cache * * @param string $feed Feed's content * @param string $timekey Memcached key of the last modification * @param string $key Memcached key of the content */ public function saveToCache( $feed, $timekey, $key ) { - global $messageMemc; - $expire = 3600 * 24; # One day - $messageMemc->set( $key, $feed, $expire ); - $messageMemc->set( $timekey, wfTimestamp( TS_MW ), $expire ); + $cache = ObjectCache::getMainWANInstance(); + $cache->set( $key, $feed, $cache::TTL_DAY ); + $cache->set( $timekey, wfTimestamp( TS_MW ), $cache::TTL_DAY ); } /** - * Try to load the feed result from $messageMemc + * Try to load the feed result from cache * * @param int $lastmod Timestamp of the last item in the recentchanges table * @param string $timekey Memcached key of the last modification @@ -132,9 +132,10 @@ class ChangesFeed { * @return string|bool Feed's content on cache hit or false on cache miss */ public function loadFromCache( $lastmod, $timekey, $key ) { - global $wgFeedCacheTimeout, $wgOut, $messageMemc; + global $wgFeedCacheTimeout, $wgOut; - $feedLastmod = $messageMemc->get( $timekey ); + $cache = ObjectCache::getMainWANInstance(); + $feedLastmod = $cache->get( $timekey ); if ( ( $wgFeedCacheTimeout > 0 ) && $feedLastmod ) { /** @@ -153,7 +154,7 @@ class ChangesFeed { if ( $feedLastmodUnix < $lastmodUnix ) { $wgOut->setLastModified( $feedLastmod ); // bug 21916 } - return $messageMemc->get( $key ); + return $cache->get( $key ); } else { wfDebug( "RC: cached feed timestamp check failed ($feedLastmod; $lastmod)\n" ); } @@ -164,7 +165,7 @@ class ChangesFeed { /** * Generate the feed items given a row from the database, printing the feed. * @param object $rows DatabaseBase resource with recentchanges rows - * @param Feed $feed + * @param ChannelFeed $feed */ public static function generateFeed( $rows, &$feed ) { $items = self::buildItems( $rows );